﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using snat.algorithms;

namespace snat
{
    public delegate void AlgorithmProcessed(string name);
    public abstract class MessagedWindowedAlgorithm : IWindowedAlgorithm
    {
        
        private readonly int windowLength;
        public int WindowLength {
            get {
                return windowLength;
            }
        }

        protected int currentPosition=0;
        public int CurrentPosition {
            get {
                return currentPosition;
            }
        }


        public MessagedWindowedAlgorithm(int _windowLength) {
            windowLength = _windowLength;
        }


        public abstract string Name { get; }
        public abstract void Register();
        public abstract void DeRegister();




        public virtual event algorithms.AlgorithmProcessed Process;
    }
}
